{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.\n",
    "\n",
    "Library documentation: <a>http://pandas.pydata.org/</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### General"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     1\n",
       "1     3\n",
       "2     5\n",
       "3   NaN\n",
       "4     6\n",
       "5     8\n",
       "dtype: float64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a series\n",
    "s = pd.Series([1,3,5,np.nan,6,8])\n",
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 0.474422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.000782</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td>-0.419772</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227\n",
       "2013-01-04  0.719197 -0.499809  1.145788 -0.809526\n",
       "2013-01-05 -1.161051 -0.115774 -0.624413  0.474422\n",
       "2013-01-06  0.000782  0.146544  0.033628 -0.419772"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a data frame\n",
    "dates = pd.date_range('20130101',periods=6)\n",
    "df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td> 1</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td> 1</td>\n",
       "      <td> 3</td>\n",
       "      <td> foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td> 1</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td> 1</td>\n",
       "      <td> 3</td>\n",
       "      <td> foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td> 1</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td> 1</td>\n",
       "      <td> 3</td>\n",
       "      <td> foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td> 1</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td> 1</td>\n",
       "      <td> 3</td>\n",
       "      <td> foo</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   A          B  C  D    E\n",
       "0  1 2013-01-02  1  3  foo\n",
       "1  1 2013-01-02  1  3  foo\n",
       "2  1 2013-01-02  1  3  foo\n",
       "3  1 2013-01-02  1  3  foo"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# another way to create a data frame\n",
    "df2 = pd.DataFrame(\n",
    "    { 'A' : 1.,\n",
    "      'B' : pd.Timestamp('20130102'),\n",
    "      'C' : pd.Series(1,index=list(range(4)),dtype='float32'),\n",
    "      'D' : np.array([3] * 4,dtype='int32'),\n",
    "      'E' : 'foo' })\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A           float64\n",
       "B    datetime64[ns]\n",
       "C           float32\n",
       "D             int32\n",
       "E            object\n",
       "dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 0.474422</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227\n",
       "2013-01-04  0.719197 -0.499809  1.145788 -0.809526\n",
       "2013-01-05 -1.161051 -0.115774 -0.624413  0.474422"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<class 'pandas.tseries.index.DatetimeIndex'>\n",
       "[2013-01-01, ..., 2013-01-06]\n",
       "Length: 6, Freq: D, Timezone: None"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([u'A', u'B', u'C', u'D'], dtype='object')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  2.05240362e-01,   5.27602841e-01,   6.10052272e-01,\n",
       "          4.69292270e-01],\n",
       "       [  8.18112883e-01,  -8.94389618e-01,  -1.60283098e+00,\n",
       "          8.62169894e-01],\n",
       "       [ -1.46210940e+00,   4.83201108e-01,  -1.04497297e+00,\n",
       "         -5.34226832e-01],\n",
       "       [  7.19196807e-01,  -4.99809344e-01,   1.14578824e+00,\n",
       "         -8.09525609e-01],\n",
       "       [ -1.16105080e+00,  -1.15774007e-01,  -6.24412514e-01,\n",
       "          4.74421893e-01],\n",
       "       [  7.82298420e-04,   1.46543576e-01,   3.36282758e-02,\n",
       "         -4.19771560e-01]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td> 6.000000</td>\n",
       "      <td> 6.000000</td>\n",
       "      <td> 6.000000</td>\n",
       "      <td> 6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>-0.146638</td>\n",
       "      <td>-0.058771</td>\n",
       "      <td>-0.247125</td>\n",
       "      <td> 0.007060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td> 0.957650</td>\n",
       "      <td> 0.561381</td>\n",
       "      <td> 1.036400</td>\n",
       "      <td> 0.679012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.870593</td>\n",
       "      <td>-0.403801</td>\n",
       "      <td>-0.939833</td>\n",
       "      <td>-0.505613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td> 0.103011</td>\n",
       "      <td> 0.015385</td>\n",
       "      <td>-0.295392</td>\n",
       "      <td> 0.024760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td> 0.590708</td>\n",
       "      <td> 0.399037</td>\n",
       "      <td> 0.465946</td>\n",
       "      <td> 0.473139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              A         B         C         D\n",
       "count  6.000000  6.000000  6.000000  6.000000\n",
       "mean  -0.146638 -0.058771 -0.247125  0.007060\n",
       "std    0.957650  0.561381  1.036400  0.679012\n",
       "min   -1.462109 -0.894390 -1.602831 -0.809526\n",
       "25%   -0.870593 -0.403801 -0.939833 -0.505613\n",
       "50%    0.103011  0.015385 -0.295392  0.024760\n",
       "75%    0.590708  0.399037  0.465946  0.473139\n",
       "max    0.818113  0.527603  1.145788  0.862170"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# quick data summary\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2013-01-01 00:00:00</th>\n",
       "      <th>2013-01-02 00:00:00</th>\n",
       "      <th>2013-01-03 00:00:00</th>\n",
       "      <th>2013-01-04 00:00:00</th>\n",
       "      <th>2013-01-05 00:00:00</th>\n",
       "      <th>2013-01-06 00:00:00</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-1.161051</td>\n",
       "      <td> 0.000782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td> 0.527603</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td> 0.146544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td> 0.610052</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 0.033628</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td> 0.469292</td>\n",
       "      <td> 0.862170</td>\n",
       "      <td>-0.534227</td>\n",
       "      <td>-0.809526</td>\n",
       "      <td> 0.474422</td>\n",
       "      <td>-0.419772</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06\n",
       "A    0.205240    0.818113   -1.462109    0.719197   -1.161051    0.000782\n",
       "B    0.527603   -0.894390    0.483201   -0.499809   -0.115774    0.146544\n",
       "C    0.610052   -1.602831   -1.044973    1.145788   -0.624413    0.033628\n",
       "D    0.469292    0.862170   -0.534227   -0.809526    0.474422   -0.419772"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>D</th>\n",
       "      <th>C</th>\n",
       "      <th>B</th>\n",
       "      <th>A</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.469292</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.205240</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.862170</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td> 0.818113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.534227</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.462109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-0.809526</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 0.719197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td> 0.474422</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-1.161051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>-0.419772</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.000782</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   D         C         B         A\n",
       "2013-01-01  0.469292  0.610052  0.527603  0.205240\n",
       "2013-01-02  0.862170 -1.602831 -0.894390  0.818113\n",
       "2013-01-03 -0.534227 -1.044973  0.483201 -1.462109\n",
       "2013-01-04 -0.809526  1.145788 -0.499809  0.719197\n",
       "2013-01-05  0.474422 -0.624413 -0.115774 -1.161051\n",
       "2013-01-06 -0.419772  0.033628  0.146544  0.000782"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# axis 0 is index, axis 1 is columns\n",
    "df.sort_index(axis=1, ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 0.474422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.000782</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td>-0.419772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-04  0.719197 -0.499809  1.145788 -0.809526\n",
       "2013-01-05 -1.161051 -0.115774 -0.624413  0.474422\n",
       "2013-01-06  0.000782  0.146544  0.033628 -0.419772\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# can sort by values too\n",
    "df.sort(columns='B')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    0.205240\n",
       "2013-01-02    0.818113\n",
       "2013-01-03   -1.462109\n",
       "2013-01-04    0.719197\n",
       "2013-01-05   -1.161051\n",
       "2013-01-06    0.000782\n",
       "Freq: D, Name: A, dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# select a column (yields a series)\n",
    "df['A']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    0.205240\n",
       "2013-01-02    0.818113\n",
       "2013-01-03   -1.462109\n",
       "2013-01-04    0.719197\n",
       "2013-01-05   -1.161051\n",
       "2013-01-06    0.000782\n",
       "Freq: D, Name: A, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# column names also attached to the object\n",
    "df.A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# slicing works\n",
    "df[0:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227\n",
       "2013-01-04  0.719197 -0.499809  1.145788 -0.809526"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['20130102':'20130104']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    0.205240\n",
       "B    0.527603\n",
       "C    0.610052\n",
       "D    0.469292\n",
       "Name: 2013-01-01 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# cross-section using a label\n",
    "df.loc[dates[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.20524036189008577"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# getting a scalar value\n",
    "df.loc[dates[0], 'A']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    0.719197\n",
       "B   -0.499809\n",
       "C    1.145788\n",
       "D   -0.809526\n",
       "Name: 2013-01-04 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# select via position\n",
    "df.iloc[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B\n",
       "2013-01-04  0.719197 -0.499809\n",
       "2013-01-05 -1.161051 -0.115774"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3:5,0:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   B         C\n",
       "2013-01-01  0.527603  0.610052\n",
       "2013-01-02 -0.894390 -1.602831\n",
       "2013-01-03  0.483201 -1.044973\n",
       "2013-01-04 -0.499809  1.145788\n",
       "2013-01-05 -0.115774 -0.624413\n",
       "2013-01-06  0.146544  0.033628"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# column slicing\n",
    "df.iloc[:,1:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.89438961765370562"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get a value by index\n",
    "df.iloc[1,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>-0.809526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.000782</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td>-0.419772</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  0.862170\n",
       "2013-01-04  0.719197 -0.499809  1.145788 -0.809526\n",
       "2013-01-06  0.000782  0.146544  0.033628 -0.419772"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# boolean indexing\n",
    "df[df.A > 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.205240</td>\n",
       "      <td> 0.527603</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 0.469292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td> 0.862170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>      NaN</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>      NaN</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td> 0.474422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.000782</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01  0.205240  0.527603  0.610052  0.469292\n",
       "2013-01-02  0.818113       NaN       NaN  0.862170\n",
       "2013-01-03       NaN  0.483201       NaN       NaN\n",
       "2013-01-04  0.719197       NaN  1.145788       NaN\n",
       "2013-01-05       NaN       NaN       NaN  0.474422\n",
       "2013-01-06  0.000782  0.146544  0.033628       NaN"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df > 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td>-0.534227</td>\n",
       "      <td>  two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 0.474422</td>\n",
       "      <td> four</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D     E\n",
       "2013-01-03 -1.462109  0.483201 -1.044973 -0.534227   two\n",
       "2013-01-05 -1.161051 -0.115774 -0.624413  0.474422  four"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# filtering\n",
    "df3 = df.copy()\n",
    "df3['E'] = ['one', 'one', 'two', 'three', 'four', 'three']\n",
    "df3[df3['E'].isin(['two', 'four'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.161051</td>\n",
       "      <td>-0.115774</td>\n",
       "      <td>-0.624413</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td> 0.000782</td>\n",
       "      <td> 0.146544</td>\n",
       "      <td> 0.033628</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D\n",
       "2013-01-01  0.000000  0.000000  0.610052  5\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  5\n",
       "2013-01-03 -1.462109  0.483201 -1.044973  5\n",
       "2013-01-04  0.719197 -0.499809  1.145788  5\n",
       "2013-01-05 -1.161051 -0.115774 -0.624413  5\n",
       "2013-01-06  0.000782  0.146544  0.033628  5"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# setting examples\n",
    "df.at[dates[0],'A'] = 0\n",
    "df.iat[0,1] = 0\n",
    "df.loc[:, 'D'] = np.array([5] * len(df))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 5</td>\n",
       "      <td>  1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 5</td>\n",
       "      <td>  1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td> 5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td> 5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D   E\n",
       "2013-01-01  0.000000  0.000000  0.610052  5   1\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  5   1\n",
       "2013-01-03 -1.462109  0.483201 -1.044973  5 NaN\n",
       "2013-01-04  0.719197 -0.499809  1.145788  5 NaN"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dealing with missing data\n",
    "df4 = df.reindex(index=dates[0:4],columns=list(df.columns) + ['E'])\n",
    "df4.loc[dates[0]:dates[1],'E'] = 1\n",
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.00000</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 5</td>\n",
       "      <td> 1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.89439</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 5</td>\n",
       "      <td> 1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A        B         C  D  E\n",
       "2013-01-01  0.000000  0.00000  0.610052  5  1\n",
       "2013-01-02  0.818113 -0.89439 -1.602831  5  1"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# drop rows with missing data\n",
    "df4.dropna(how='any')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td> 5</td>\n",
       "      <td> 1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-1.602831</td>\n",
       "      <td> 5</td>\n",
       "      <td> 1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.462109</td>\n",
       "      <td> 0.483201</td>\n",
       "      <td>-1.044973</td>\n",
       "      <td> 5</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.719197</td>\n",
       "      <td>-0.499809</td>\n",
       "      <td> 1.145788</td>\n",
       "      <td> 5</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D  E\n",
       "2013-01-01  0.000000  0.000000  0.610052  5  1\n",
       "2013-01-02  0.818113 -0.894390 -1.602831  5  1\n",
       "2013-01-03 -1.462109  0.483201 -1.044973  5  5\n",
       "2013-01-04  0.719197 -0.499809  1.145788  5  5"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fill missing data\n",
    "df4.fillna(value=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td>  True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td> False</td>\n",
       "      <td>  True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                A      B      C      D      E\n",
       "2013-01-01  False  False  False  False  False\n",
       "2013-01-02  False  False  False  False  False\n",
       "2013-01-03  False  False  False  False   True\n",
       "2013-01-04  False  False  False  False   True"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# boolean mask for nan values\n",
    "pd.isnull(df4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Operations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A   -0.180845\n",
       "B   -0.146705\n",
       "C   -0.247125\n",
       "D    5.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    1.402513\n",
       "2013-01-02    0.830223\n",
       "2013-01-03    0.744030\n",
       "2013-01-04    1.591294\n",
       "2013-01-05    0.774691\n",
       "2013-01-06    1.295239\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pivot the mean calculation\n",
    "df.mean(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-2.462109</td>\n",
       "      <td>-0.516799</td>\n",
       "      <td>-2.044973</td>\n",
       "      <td>  4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-2.280803</td>\n",
       "      <td>-3.499809</td>\n",
       "      <td>-1.854212</td>\n",
       "      <td>  2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-6.161051</td>\n",
       "      <td>-5.115774</td>\n",
       "      <td>-5.624413</td>\n",
       "      <td>  0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>      NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C   D\n",
       "2013-01-01       NaN       NaN       NaN NaN\n",
       "2013-01-02       NaN       NaN       NaN NaN\n",
       "2013-01-03 -2.462109 -0.516799 -2.044973   4\n",
       "2013-01-04 -2.280803 -3.499809 -1.854212   2\n",
       "2013-01-05 -6.161051 -5.115774 -5.624413   0\n",
       "2013-01-06       NaN       NaN       NaN NaN"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# aligning objects with different dimensions\n",
    "s = pd.Series([1,3,5,np.nan,6,8],index=dates).shift(2)\n",
    "df.sub(s,axis='index')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.000000</td>\n",
       "      <td> 0.610052</td>\n",
       "      <td>  5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td> 0.818113</td>\n",
       "      <td>-0.894390</td>\n",
       "      <td>-0.992779</td>\n",
       "      <td> 10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.643997</td>\n",
       "      <td>-0.411189</td>\n",
       "      <td>-2.037752</td>\n",
       "      <td> 15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td> 0.075200</td>\n",
       "      <td>-0.910998</td>\n",
       "      <td>-0.891963</td>\n",
       "      <td> 20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-1.085851</td>\n",
       "      <td>-1.026772</td>\n",
       "      <td>-1.516376</td>\n",
       "      <td> 25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>-1.085068</td>\n",
       "      <td>-0.880228</td>\n",
       "      <td>-1.482748</td>\n",
       "      <td> 30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C   D\n",
       "2013-01-01  0.000000  0.000000  0.610052   5\n",
       "2013-01-02  0.818113 -0.894390 -0.992779  10\n",
       "2013-01-03 -0.643997 -0.411189 -2.037752  15\n",
       "2013-01-04  0.075200 -0.910998 -0.891963  20\n",
       "2013-01-05 -1.085851 -1.026772 -1.516376  25\n",
       "2013-01-06 -1.085068 -0.880228 -1.482748  30"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# applying functions\n",
    "df.apply(np.cumsum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    2.280222\n",
       "B    1.377591\n",
       "C    2.748619\n",
       "D    0.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda x: x.max() - x.min())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4    3\n",
       "6    2\n",
       "1    2\n",
       "0    2\n",
       "5    1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# simple count aggregation\n",
    "s = pd.Series(np.random.randint(0,7,size=10))\n",
    "s.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Merging / Grouping / Shaping"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.006589</td>\n",
       "      <td>-1.232048</td>\n",
       "      <td>-0.147323</td>\n",
       "      <td> 0.709050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.201048</td>\n",
       "      <td> 0.675688</td>\n",
       "      <td> 1.110037</td>\n",
       "      <td> 0.553489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.159224</td>\n",
       "      <td>-1.226735</td>\n",
       "      <td>-0.141689</td>\n",
       "      <td>-1.450920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.049450</td>\n",
       "      <td>-0.438565</td>\n",
       "      <td> 0.670832</td>\n",
       "      <td> 1.089032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.105969</td>\n",
       "      <td>-0.891644</td>\n",
       "      <td> 0.626482</td>\n",
       "      <td> 0.416679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-1.103222</td>\n",
       "      <td>-1.983806</td>\n",
       "      <td> 0.282366</td>\n",
       "      <td> 0.031730</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td> 0.380308</td>\n",
       "      <td>-0.397791</td>\n",
       "      <td>-0.322955</td>\n",
       "      <td> 0.074480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-0.623134</td>\n",
       "      <td>-0.205967</td>\n",
       "      <td>-0.367622</td>\n",
       "      <td> 1.437279</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-0.481202</td>\n",
       "      <td> 1.242607</td>\n",
       "      <td>-2.107715</td>\n",
       "      <td> 1.020051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-0.345859</td>\n",
       "      <td>-0.759047</td>\n",
       "      <td>-0.927940</td>\n",
       "      <td> 1.487916</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3\n",
       "0 -0.006589 -1.232048 -0.147323  0.709050\n",
       "1 -1.201048  0.675688  1.110037  0.553489\n",
       "2 -0.159224 -1.226735 -0.141689 -1.450920\n",
       "3 -0.049450 -0.438565  0.670832  1.089032\n",
       "4 -0.105969 -0.891644  0.626482  0.416679\n",
       "5 -1.103222 -1.983806  0.282366  0.031730\n",
       "6  0.380308 -0.397791 -0.322955  0.074480\n",
       "7 -0.623134 -0.205967 -0.367622  1.437279\n",
       "8 -0.481202  1.242607 -2.107715  1.020051\n",
       "9 -0.345859 -0.759047 -0.927940  1.487916"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# concatenation\n",
    "df = pd.DataFrame(np.random.randn(10, 4))\n",
    "pieces = [df[:3], df[3:7], df[7:]]\n",
    "pd.concat(pieces)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>lval</th>\n",
       "      <th>rval</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td> foo</td>\n",
       "      <td> 1</td>\n",
       "      <td> 4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td> foo</td>\n",
       "      <td> 1</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td> foo</td>\n",
       "      <td> 2</td>\n",
       "      <td> 4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td> foo</td>\n",
       "      <td> 2</td>\n",
       "      <td> 5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   key  lval  rval\n",
       "0  foo     1     4\n",
       "1  foo     1     5\n",
       "2  foo     2     4\n",
       "3  foo     2     5"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SQL-style join\n",
    "left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})\n",
    "right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})\n",
    "pd.merge(left, right, on='key')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.992219</td>\n",
       "      <td> 1.298979</td>\n",
       "      <td> 0.998799</td>\n",
       "      <td>-0.164381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td> 0.902147</td>\n",
       "      <td> 1.118289</td>\n",
       "      <td>-0.169358</td>\n",
       "      <td> 0.117833</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td> 1.201061</td>\n",
       "      <td>-1.699020</td>\n",
       "      <td>-2.112810</td>\n",
       "      <td>-1.412482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td> 1.084910</td>\n",
       "      <td> 1.171135</td>\n",
       "      <td> 0.384876</td>\n",
       "      <td> 0.535239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.922543</td>\n",
       "      <td>-0.018670</td>\n",
       "      <td>-1.506012</td>\n",
       "      <td> 0.293739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td> 0.481017</td>\n",
       "      <td> 0.639182</td>\n",
       "      <td>-0.090676</td>\n",
       "      <td> 0.951261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td> 1.201241</td>\n",
       "      <td> 2.528836</td>\n",
       "      <td>-0.530795</td>\n",
       "      <td> 0.901950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td> 0.899290</td>\n",
       "      <td> 0.562738</td>\n",
       "      <td> 1.566468</td>\n",
       "      <td>-0.846827</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td> 1.084910</td>\n",
       "      <td> 1.171135</td>\n",
       "      <td> 0.384876</td>\n",
       "      <td> 0.535239</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          A         B         C         D\n",
       "0 -0.992219  1.298979  0.998799 -0.164381\n",
       "1  0.902147  1.118289 -0.169358  0.117833\n",
       "2  1.201061 -1.699020 -2.112810 -1.412482\n",
       "3  1.084910  1.171135  0.384876  0.535239\n",
       "4 -0.922543 -0.018670 -1.506012  0.293739\n",
       "5  0.481017  0.639182 -0.090676  0.951261\n",
       "6  1.201241  2.528836 -0.530795  0.901950\n",
       "7  0.899290  0.562738  1.566468 -0.846827\n",
       "8  1.084910  1.171135  0.384876  0.535239"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# append\n",
    "df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])\n",
    "s = df.iloc[3]\n",
    "df.append(s, ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td> foo</td>\n",
       "      <td>   one</td>\n",
       "      <td> 0.193948</td>\n",
       "      <td>-1.385614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td> bar</td>\n",
       "      <td>   one</td>\n",
       "      <td>-0.257859</td>\n",
       "      <td> 2.127808</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td> foo</td>\n",
       "      <td>   two</td>\n",
       "      <td>-0.944848</td>\n",
       "      <td>-0.760487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td> bar</td>\n",
       "      <td> three</td>\n",
       "      <td>-0.872161</td>\n",
       "      <td>-1.707254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td> foo</td>\n",
       "      <td>   two</td>\n",
       "      <td>-0.658552</td>\n",
       "      <td> 0.175699</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td> bar</td>\n",
       "      <td>   two</td>\n",
       "      <td>-1.887614</td>\n",
       "      <td> 0.627801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td> foo</td>\n",
       "      <td>   one</td>\n",
       "      <td> 0.439001</td>\n",
       "      <td>-2.264125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td> foo</td>\n",
       "      <td> three</td>\n",
       "      <td>-0.829368</td>\n",
       "      <td>-1.229315</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     A      B         C         D\n",
       "0  foo    one  0.193948 -1.385614\n",
       "1  bar    one -0.257859  2.127808\n",
       "2  foo    two -0.944848 -0.760487\n",
       "3  bar  three -0.872161 -1.707254\n",
       "4  foo    two -0.658552  0.175699\n",
       "5  bar    two -1.887614  0.627801\n",
       "6  foo    one  0.439001 -2.264125\n",
       "7  foo  three -0.829368 -1.229315"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(\n",
    "    { 'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],\n",
    "      'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],\n",
    "      'C' : np.random.randn(8),\n",
    "      'D' : np.random.randn(8) })\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>bar</th>\n",
       "      <td>-3.017634</td>\n",
       "      <td> 1.048355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>foo</th>\n",
       "      <td>-1.799818</td>\n",
       "      <td>-5.463842</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            C         D\n",
       "A                      \n",
       "bar -3.017634  1.048355\n",
       "foo -1.799818 -5.463842"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# group by\n",
    "df.groupby('A').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">bar</th>\n",
       "      <th>one</th>\n",
       "      <td>-0.257859</td>\n",
       "      <td> 2.127808</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>three</th>\n",
       "      <td>-0.872161</td>\n",
       "      <td>-1.707254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>-1.887614</td>\n",
       "      <td> 0.627801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">foo</th>\n",
       "      <th>one</th>\n",
       "      <td> 0.632949</td>\n",
       "      <td>-3.649739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>three</th>\n",
       "      <td>-0.829368</td>\n",
       "      <td>-1.229315</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>-1.603400</td>\n",
       "      <td>-0.584788</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  C         D\n",
       "A   B                        \n",
       "bar one   -0.257859  2.127808\n",
       "    three -0.872161 -1.707254\n",
       "    two   -1.887614  0.627801\n",
       "foo one    0.632949 -3.649739\n",
       "    three -0.829368 -1.229315\n",
       "    two   -1.603400 -0.584788"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# group by multiple columns\n",
    "df.groupby(['A','B']).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0 </th>\n",
       "      <td>   one</td>\n",
       "      <td> A</td>\n",
       "      <td> foo</td>\n",
       "      <td>-0.853288</td>\n",
       "      <td> 2.549878</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1 </th>\n",
       "      <td>   one</td>\n",
       "      <td> B</td>\n",
       "      <td> foo</td>\n",
       "      <td> 0.552557</td>\n",
       "      <td> 0.865465</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2 </th>\n",
       "      <td>   two</td>\n",
       "      <td> C</td>\n",
       "      <td> foo</td>\n",
       "      <td> 0.700943</td>\n",
       "      <td> 0.800563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3 </th>\n",
       "      <td> three</td>\n",
       "      <td> A</td>\n",
       "      <td> bar</td>\n",
       "      <td>-0.466072</td>\n",
       "      <td> 0.011508</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4 </th>\n",
       "      <td>   one</td>\n",
       "      <td> B</td>\n",
       "      <td> bar</td>\n",
       "      <td> 0.465724</td>\n",
       "      <td> 1.087874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5 </th>\n",
       "      <td>   one</td>\n",
       "      <td> C</td>\n",
       "      <td> bar</td>\n",
       "      <td> 1.105949</td>\n",
       "      <td>-0.118134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6 </th>\n",
       "      <td>   two</td>\n",
       "      <td> A</td>\n",
       "      <td> foo</td>\n",
       "      <td>-0.666630</td>\n",
       "      <td>-0.143474</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7 </th>\n",
       "      <td> three</td>\n",
       "      <td> B</td>\n",
       "      <td> foo</td>\n",
       "      <td> 0.644902</td>\n",
       "      <td> 1.731818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8 </th>\n",
       "      <td>   one</td>\n",
       "      <td> C</td>\n",
       "      <td> foo</td>\n",
       "      <td> 0.819170</td>\n",
       "      <td>-1.153036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9 </th>\n",
       "      <td>   one</td>\n",
       "      <td> A</td>\n",
       "      <td> bar</td>\n",
       "      <td>-1.849893</td>\n",
       "      <td> 0.733137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>   two</td>\n",
       "      <td> B</td>\n",
       "      <td> bar</td>\n",
       "      <td> 0.684170</td>\n",
       "      <td>-0.276237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td> three</td>\n",
       "      <td> C</td>\n",
       "      <td> bar</td>\n",
       "      <td> 0.592939</td>\n",
       "      <td>-0.830433</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        A  B    C         D         E\n",
       "0     one  A  foo -0.853288  2.549878\n",
       "1     one  B  foo  0.552557  0.865465\n",
       "2     two  C  foo  0.700943  0.800563\n",
       "3   three  A  bar -0.466072  0.011508\n",
       "4     one  B  bar  0.465724  1.087874\n",
       "5     one  C  bar  1.105949 -0.118134\n",
       "6     two  A  foo -0.666630 -0.143474\n",
       "7   three  B  foo  0.644902  1.731818\n",
       "8     one  C  foo  0.819170 -1.153036\n",
       "9     one  A  bar -1.849893  0.733137\n",
       "10    two  B  bar  0.684170 -0.276237\n",
       "11  three  C  bar  0.592939 -0.830433"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(\n",
    "    { 'A' : ['one', 'one', 'two', 'three'] * 3,\n",
    "      'B' : ['A', 'B', 'C'] * 4,\n",
    "      'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,\n",
    "      'D' : np.random.randn(12),\n",
    "      'E' : np.random.randn(12)} )\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Program Files\\Anaconda\\lib\\site-packages\\pandas\\util\\decorators.py:53: FutureWarning: rows is deprecated, use index instead\n",
      "  warnings.warn(msg, FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>bar</th>\n",
       "      <th>foo</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">one</th>\n",
       "      <th>A</th>\n",
       "      <td>-1.849893</td>\n",
       "      <td>-0.853288</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td> 0.465724</td>\n",
       "      <td> 0.552557</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td> 1.105949</td>\n",
       "      <td> 0.819170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">three</th>\n",
       "      <th>A</th>\n",
       "      <td>-0.466072</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>      NaN</td>\n",
       "      <td> 0.644902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td> 0.592939</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">two</th>\n",
       "      <th>A</th>\n",
       "      <td>      NaN</td>\n",
       "      <td>-0.666630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td> 0.684170</td>\n",
       "      <td>      NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>      NaN</td>\n",
       "      <td> 0.700943</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "C             bar       foo\n",
       "A     B                    \n",
       "one   A -1.849893 -0.853288\n",
       "      B  0.465724  0.552557\n",
       "      C  1.105949  0.819170\n",
       "three A -0.466072       NaN\n",
       "      B       NaN  0.644902\n",
       "      C  0.592939       NaN\n",
       "two   A       NaN -0.666630\n",
       "      B  0.684170       NaN\n",
       "      C       NaN  0.700943"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pivot table\n",
    "pd.pivot_table(df, values='D', rows=['A', 'B'], columns=['C'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Time Series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-01    24406\n",
       "Freq: 5T, dtype: int32"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# time period resampling\n",
    "rng = pd.date_range('1/1/2012', periods=100, freq='S')\n",
    "ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)\n",
    "ts.resample('5Min', how='sum')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-31   -0.624893\n",
       "2012-02-29   -0.176292\n",
       "2012-03-31    1.673556\n",
       "2012-04-30    0.707903\n",
       "2012-05-31    0.533647\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('1/1/2012', periods=5, freq='M')\n",
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-01   -0.624893\n",
       "2012-02-01   -0.176292\n",
       "2012-03-01    1.673556\n",
       "2012-04-01    0.707903\n",
       "2012-05-01    0.533647\n",
       "Freq: MS, dtype: float64"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ps = ts.to_period()\n",
    "ps.to_timestamp()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xd180438>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd0ceb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# time series plot\n",
    "ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))\n",
    "ts = ts.cumsum()\n",
    "ts.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0xd541fd0>"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd554550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd541cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot with a data frame\n",
    "df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=['A', 'B', 'C', 'D'])\n",
    "df = df.cumsum()\n",
    "plt.figure(); df.plot(); plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Input / Output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# write to a csv file\n",
    "df.to_csv('foo.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.914956</td>\n",
       "      <td> 0.294759</td>\n",
       "      <td> 0.143332</td>\n",
       "      <td> 0.174706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.297442</td>\n",
       "      <td> 1.640208</td>\n",
       "      <td> 0.425301</td>\n",
       "      <td>-0.075666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.762292</td>\n",
       "      <td> 0.741179</td>\n",
       "      <td> 0.505002</td>\n",
       "      <td>-0.128560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.577471</td>\n",
       "      <td>-0.495294</td>\n",
       "      <td> 1.803332</td>\n",
       "      <td> 0.188178</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.137486</td>\n",
       "      <td>-0.676985</td>\n",
       "      <td> 1.435308</td>\n",
       "      <td> 0.181047</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          A         B         C         D\n",
       "0 -0.914956  0.294759  0.143332  0.174706\n",
       "1 -0.297442  1.640208  0.425301 -0.075666\n",
       "2 -0.762292  0.741179  0.505002 -0.128560\n",
       "3 -1.577471 -0.495294  1.803332  0.188178\n",
       "4 -0.137486 -0.676985  1.435308  0.181047"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# read file back in\n",
    "path = r'C:\\Users\\John\\Documents\\IPython Notebooks\\foo.csv'\n",
    "newDf = pd.read_csv(path)\n",
    "newDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# remove the file\n",
    "import os\n",
    "os.remove(path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# can also do Excel\n",
    "df.to_excel('foo.xlsx', sheet_name='Sheet1')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-01</th>\n",
       "      <td>-0.914956</td>\n",
       "      <td> 0.294759</td>\n",
       "      <td> 0.143332</td>\n",
       "      <td> 0.174706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-02</th>\n",
       "      <td>-0.297442</td>\n",
       "      <td> 1.640208</td>\n",
       "      <td> 0.425301</td>\n",
       "      <td>-0.075666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-03</th>\n",
       "      <td>-0.762292</td>\n",
       "      <td> 0.741179</td>\n",
       "      <td> 0.505002</td>\n",
       "      <td>-0.128560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-04</th>\n",
       "      <td>-1.577471</td>\n",
       "      <td>-0.495294</td>\n",
       "      <td> 1.803332</td>\n",
       "      <td> 0.188178</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-0.137486</td>\n",
       "      <td>-0.676985</td>\n",
       "      <td> 1.435308</td>\n",
       "      <td> 0.181047</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2000-01-01 -0.914956  0.294759  0.143332  0.174706\n",
       "2000-01-02 -0.297442  1.640208  0.425301 -0.075666\n",
       "2000-01-03 -0.762292  0.741179  0.505002 -0.128560\n",
       "2000-01-04 -1.577471 -0.495294  1.803332  0.188178\n",
       "2000-01-05 -0.137486 -0.676985  1.435308  0.181047"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "newDf2 = pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])\n",
    "newDf2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "os.remove('foo.xlsx')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
